package com.lmf.mock.starter.autoconfigure.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * Mock接口实体
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("mock_api")
public class MockApi {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 分组ID
     */
    @TableField("group_id")
    private Long groupId;

    /**
     * 接口名称
     */
    @TableField("api_name")
    private String apiName;

    /**
     * 接口路径
     */
    @TableField("api_path")
    private String apiPath;

    /**
     * HTTP方法
     */
    @TableField("http_method")
    private String httpMethod;

    /**
     * 请求参数示例
     */
    @TableField("request_params")
    private String requestParams;

    /**
     * 参数匹配规则 (JSON格式存储)
     * 用于根据请求参数匹配不同的响应
     */
    @TableField("param_match_rules")
    private String paramMatchRules;

    /**
     * 真实服务URL
     * 当配置了真实URL时，可以从真实服务拉取数据
     */
    @TableField("real_url")
    private String realUrl;

    /**
     * 响应数据
     */
    @TableField("response_data")
    private String responseData;

    /**
     * 响应状态码
     */
    @TableField("status_code")
    private Integer statusCode;

    /**
     * 响应延迟(毫秒)
     */
    @TableField("delay_ms")
    private Integer delayMs;

    /**
     * 是否启用
     */
    @TableField("enabled")
    private Boolean enabled;

    /**
     * 排序
     */
    @TableField("sort_order")
    private Integer sortOrder;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
